AWS CLI のエラー「Connect timeout on/Could not connect to the endpoint URL: ~」を回避するには
AWS CLI のエラー「Could not connect to the endpoint URL: ~」「Connect timeout on endpoint URL: ~」が発生した場合は、当該のエンドポイントへの接続性をご確認ください。
困っていた内容
AWS CLI のコマンドを実行した際に以下のエラーが発生しました。
Could not connect to the endpoint URL: "https://<サービス名>.<リージョン名>.amazonaws.com/"
Connect timeout on endpoint URL: "https://<サービス名>.<リージョン名>.amazonaws.com/"
このエラーを回避する方法を教えてください。
どう対応すればいいの?
AWS CLI コマンド実行元の環境にて、以下の要件を満たしているかをご確認ください。
- ネットワーク経由で AWS のサービスエンドポイントへアクセスできる設定になっているか。
また、実行コマンドについて以下の観点にて正しいかをご確認ください。
- オプション
--region
の設定に誤りがないか
再現1: ネットワーク経由で AWS のサービスエンドポイントへアクセスできない場合
本エラーを再現するために、以下を行いました。
- パブリックサブネットを作成
- サブネットに EC2 インスタンスを作成
- EC2 インスタンスに S3 の読み込み権限のある IAM ロールを付与
この状態では、エンドポイントへの通信に成功し、CLI コマンドが実行されます。
$ aws s3 ls 2021-01-14 06:23:13 testbucket0123456789 2020-12-10 04:06:12 <以下略>
- サブネットのアクセスコントロールリスト(ACL)にて、443 ポートの通信を禁止
この状態では、エンドポイントへの接続は 443 ポートでの通信ができないことから失敗します。
$ aws s3 ls Connect timeout on endpoint URL: "https://s3.amazonaws.com/"
再現2: オプション --region に誤りがある場合
存在しないリージョン ap-northeast-6 に対して AWS CLI コマンドを実行すると、 存在しないエンドポイントへの接続試行を行い、失敗します。
$ aws s3 ls --region ap-northeast-6 Could not connect to the endpoint URL: "https://sts.ap-northeast-6.amazonaws.com/"